
#include"pro.h"
#include<string.h>
#include<unistd.h>

#define SIZE 101 
#define STLYE '#'

//根据进度-动态刷新一次进度条
void FflushPro(double total,double curr)
{
    //旋转光标
    const char* lab = "|/-\\";
    // 计算光标字符串的长度
    int len = strlen(lab);
    // 定义一个静态变量，用于记录当前光标的位置
    static int index = 0;
    char buff[SIZE];
    //把buff全部改为0
    memset(buff,'\0',sizeof(buff));
    // 计算当前进度curr占总进度total的百分比
    double rate = curr*100.0 / total;
    // 计算当前进度curr占总进度total的百分比
    int num = (int)rate;
    //添加#号
    int i = 0;
   // 循环，根据当前进度num，在buff数组中填充进度符号
    for(;i<num;i++)
    {
        buff[i] = STLYE;
    }
    printf("[%-100s][%.2lf%%][%c]\r",buff,rate,lab[index++]);
    // 更新光标的位置，确保循环使用光标字符串，例如index从0变为1
    index %=  len;
    //刷新缓冲区
    fflush(stdout);
    // 如果进度达到或超过100%，换行
   if(num >= 100)
   {
       printf("\n");
   }
}


////进度条
//void pro()
//{
//    int rate = 0;
//    char buff[SIZE];
//    memset(buff,0,sizeof(buff));
//    const char *lab = "|/-\\"; 
//    int len = strlen(lab);
//
//    while(rate <= 100)
//    {
//        printf("[%-100s][%d%%][%c]\r", buff , rate , lab[rate % len]);
//        fflush(stdout);
//        buff[rate] = STLYE;
//        rate++;
//        usleep(50000);
//    }
//    printf("\n");
//}
//
